const path =require('path')

const {uploadFileError,unSupporteFileType,createGoodsError,invalidGoodsID} =require('../constant/err.type');

const {createGoods,updateGoods,removeGoods,restoreGoods,findGoods} =require('../service/goods.service');
class GoodsController{
    //上传图片  
    async upload(ctx){
        console.log(ctx.request.files.file);
        try{
            const {file}=ctx.request.files
            const fileTypes=['image/jpeg','image/png'] //允许上传的文件类型
            if(file){
                if(!fileTypes.includes(file.mimetype)){
                    ctx.app.emit('error',unSupporteFileType,ctx)
                    return;
                }
            
                ctx.body = {
                    code:200,
                    message:'图片上传成功',
                    data:{
                        goods_img:path.basename(file.filepath )//返回文件名
                    }
                }
    
            }
        } catch (err) {
            console.error(err);
            ctx.app.emit('error',uploadFileError,ctx)
        }
     
      }

    //发布商品
    async create(ctx){
        //直接调用service中的createGoods方法
        //去除创建时间和更新时间
        try{
           const {createdAt,updatedAt,...res}=  await createGoods(ctx.request.body)
           ctx.body={
            code:200,
            message:'发布商品成功',
            data:res 
           }
        } catch (err) {
            console.error(err);
            ctx.app.emit('error',createGoodsError,ctx)
            return;
        }
      
        
        // ctx.body='发布商品成功'
    }

    //修改商品
    async update(ctx){
        try{
            const res= await updateGoods(ctx.params.id,ctx.request.body) 
            console.log(res);
            if(res){
                ctx.body={
                    code:200,
                    message:'修改商品成功',
                    data:'' 
                }
            }else{
             ctx.app.emit('error',invalidGoodsID,ctx)
             return;
            }
            
        } catch (err) {
            console.error(err);
        }
    
    }

    //删除商品
    async remove(ctx) {
        try {
            await removeGoods(ctx.params.id)
            ctx.body = {
                code: 200,
                message: '删除商品成功',
                data: ''
            }

        } catch (err) {
            console.error(err);
        }

    }

    //商品下架
    async takenOff(ctx) {
        try {
            await removeGoods(ctx.params.id)
            ctx.body = {
                code: 200,
                message: '下架商品成功',
                data: ''
            }

        } catch (err) {
            console.error(err);
        }

    }

    //商品上架
    async restore(ctx) {
        try {
            await restoreGoods(ctx.params.id)
            ctx.body = {
                code: 200,
                message: '上架商品成功',
                data: ''
            }

        } catch (err) {
            console.error(err);
        }

    }

    //获取商品列表
    async findAll(ctx) {
        try {
            //1.解析pageNum和pageSize
            const { pageNum = 1, pageSize = 10 } = ctx.request.query;
            //2.调用数据处理的方法
            const res = await findGoods(pageNum, pageSize);
            //3.返回数据
            ctx.body = {
                code: 200,
                message: '获取商品列表成功',
                data: res
            }
        }
        catch (err) {
            console.error(err);
        }

    }

    
   
    
}

module.exports = new GoodsController();